package com.cjy.set;

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
/*
    java.util.Set接口 extends Collection接口
    Set接口的特点：
        1.不允许储存重复的元素
        2.没有索引，没有带索引的方法，也不能使用普通的For循环遍历，但可以使用增强for循环遍历或者用迭代器
    java.util.HashSet集合 implements Set接口
    HashSet特点：
        1.不允许存储重复的元素
        2.没有索引，没有带索引的方法，也不能使用普通的for循环遍历，但可以使用增强for循环遍历或者用迭代器
        3.是一个无序的集合，储存元素和取出元素的顺序肯能不一致
        4.底层是一个哈希表结构（查询的速度非常快）
 */
public class TestHashSet {
    public static void main(String[] args) {
        Set<Integer> hashSet = new HashSet();
        //添加元素
        hashSet.add(1);
        hashSet.add(3);
        hashSet.add(2);
        System.out.println(hashSet);
        //查看元素个数
        System.out.println("元素个数："+hashSet.size());
        System.out.println("=================");
        //删除元素
        hashSet.remove(1);
        System.out.println(hashSet);
        System.out.println("=================");

        Set<Integer> hashSet2 = new HashSet();
        hashSet.add(6);
        hashSet.add(9);
        hashSet.add(2);
        //将hashSet2的元素放到hashSet中，但是有重复的只显示一个,注意：放入后hashSet2中的元素也将消失便为空[]
        hashSet.addAll(hashSet2);
        System.out.println(hashSet); //hashSet [2369]
        System.out.println("=================");
        //从hashSet中删除所有hashSet2的元素
        hashSet.removeAll(hashSet2);
        //保留hashSet2和hashSet共有的元素
        hashSet.retainAll(hashSet2);

    }
}
